﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.Data.SqlClient;
using System.IO;
using System.Windows;

namespace Persistencia
{
    public class Utils
    {
        private static Context context;

        public static void EfetuarLogin(string nomeUsuario, string senha)
        {

            if (nomeUsuario.Equals(""))
            {
                MessageBox.Show("Informe seu usuário.");
            }
            else if(senha.Equals(""))
            {
                MessageBox.Show("Informe sua senha.");
            }
            else
            {
                string hashSenha = EncryptMd5(nomeUsuario,senha);
                context = new Context();
                Usuario usuario = new Usuario();
           //     usuario = 
                //DataSet usuarios = context.SelectAll("Usuario", "spObterUsuario");
                //DataView dv = usuarios.Tables[0].DefaultView;

                string query = "Nome = '" + nomeUsuario + "' AND Senha = '" + hashSenha + "'";

                dv.RowFilter = query;

                if (dv.Count > 0)
                {
                    string _nome = dv[0].Row["Nome"].ToString();
                    string _senha = dv[0].Row["Senha"].ToString();

                    if (_nome.Equals(nomeUsuario) && _senha.Equals(hashSenha))
                    {
                        global. = new Usuario()
                        {
                            Nome = _nome,
                            senha = _senha
                        };

                        Main principal = new Main();
                        principal.ShowDialog();
                    }
                    else
                    {
                        MessageBox.Show("Usuário ou Senha incorretos.");
                    }
                }
                else 
                {
                    if (nomeUsuario.Equals("admin"))
                    {
                        frmCadastrarEmpresa frmConfiguracoes = new frmCadastrarEmpresa();
                        frmConfiguracoes.ShowDialog();
                    }
                    else {
                        MessageBox.Show("Usuário não encontrado.");
                    }
                }
            }
        }

        public static string EncryptMd5(string _login, string _senha)
        {
            MD5 md5Hasher = MD5.Create();
            byte[] valorCriptografado = md5Hasher.ComputeHash(Encoding.Default.GetBytes(_login+"_"+_senha));
            StringBuilder strBuilder = new StringBuilder();

            for(int i = 0 ; i < valorCriptografado.Length ; i++ ) {
                strBuilder.Append(valorCriptografado[i].ToString("x2"));
            }

            return strBuilder.ToString().ToUpper();
        }

        public static void Restart()
        {
            MessageBox.Show("A aplicação será reiniciada.");

            Application.Exit();
            Kill();
         

            Application.Restart();
        }

        public static void Kill() 
        {
            System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("DexComanda");
            // Before starting the new process make sure no other MyProcessName is running.
            foreach (System.Diagnostics.Process p in process)
            {
                p.Kill();
            }
        

        }

        public static void ScripAtualizar(string caminho, string script, string ConectionString)
        {
            //Pega o caminho completo
            string fullPath = Directory.GetDirectoryRoot(caminho);

            //
            string arquivo = fullPath+""+script;

            FileStream fileToRead = File.Open(arquivo, FileMode.Open);
            string linhas = "";
            string line;
            StreamReader sr = new StreamReader(fileToRead);

            while ((line = sr.ReadLine()) != null)
            {
                linhas += line+"\r\n";
            }

            SqlConnection SqlConnection = new SqlConnection(ConectionString);
            SqlCommand SqlCommand = new SqlCommand();
            SqlCommand.Connection = SqlConnection;
            try
            {
                SqlCommand.CommandText = linhas;
                
                SqlConnection.Open();
                SqlCommand.ExecuteNonQuery();
                MessageBox.Show("Banco de Dados Atualizado com sucesso");
            }
            catch (Exception)
            {
                MessageBox.Show("Ocorreu um erro ao executar o script favor entrar em contato com suporte !");
                throw;
            }
           
        }
    }
}

}
